Technical Field of the Invention
The present invention relates in general to state machines and state machine design and, in particular, to a customizable state machine and state aggregation technique for processing collaborative and transactional business objects.
Background of the Invention
The use of object-oriented programming languages, such as C++, Smalltalk, JAVA, and Object Pascal, has allowed system designers and programmers to significantly increase the design flexibility and performance of business applications in electronic commerce environments. Object-oriented programming languages allow programmers to define the data type of a data structure, and the types of operations that can be applied to the data structure. As a result, the data structure becomes an “object”, which is a self-contained entity that includes both data and the procedures (e.g., code) to manipulate the data. Also, programmers can create relationships between objects. For example, an object can be created that can inherit certain characteristics of other objects. As such, a primary advantage of object-oriented programming over previous programming techniques is that programmers can create software components that do not have to be changed when a new type of object is introduced. A programmer can create a new object that inherits some of its characteristics from the existing objects. Consequently, object-oriented software is typically much more design flexible than software developed according to previous programming techniques, because the object-oriented software is relatively easy to modify. Also, using object-oriented software, object databases that store objects directly can be used. An object stored in an object database can reference another object without the use of linking fields (such as in relational databases). As a result, object databases are typically much more powerful than relational databases when handling complex object relationships with complex data types. In order to take advantage of object-oriented programming techniques, relational database manufacturers are in the process of combining relational and object technologies. Also, it is possible to use objects in non-object-oriented languages, by the use of function calls that are driven by object-oriented mechanisms.
A business object is an object that is modeled from a business concept, such as, for example, a business person, place, event, or process. As such, business objects can be created to represent actual business entities, such as products, Purchase Orders, invoices, payments, customers, suppliers, employees, etc. Business objects are scalable and can be deployed in various configurations and at multiple levels. By taking advantage of object-oriented technologies, business objects can be used to develop and customize business applications.
In an electronic marketplace, enterprises (e.g., business organizations) must regularly collaborate to carry out their operations. For example, enterprises may collaborate with respect to sourcing, design, production, and any other suitable activities. However, certain business objects in a collaborative application tend to be very reactive. In other words, their semantics (the meanings of their instructions) can change radically based on the actions taken by different entities in the collaborative application space. In this regard, it is crucial for designers to accurately model these business objects and their potential behavior based on the actions undertaken. The entities (e.g., business enterprises) in a collaborative application space can perform a set of well-defined actions on these business objects, which actions are based on the objects' stage of processing. These business objects carry logic that is specifically related to the particular business implementations involved. Consequently, when such a collaborative application is deployed, the collaborative application needs to have sufficient flexibility to appropriately define the workflows and semantics for the business objects involved.
State machines can be suitable vehicles for processing business objects and the various states encountered during the objects' life cycles. However, existing state machine design approaches are incapable of effectively accounting for complex workflows and problems encountered in a collaborative environment. As a result, there is a pressing need for a design approach that can simplify state machine design for a collaborative business environment, in terms of flexibility, customization, and deployment, and that also can realize a high level of performance for the business applications involved.